home *** CD-ROM | disk | FTP | other *** search
/ PC World 2007 June / PCWorld_2007-06_cd.bin / v cisle / tclock / tclocklight-040702-3.exe / source / property / pagetaskbar.c < prev    next >
C/C++ Source or Header  |  2004-09-07  |  5KB  |  190 lines

  1. /*-------------------------------------------------------------
  2.   pagetaskbar.c : "Taskbar" page of properties
  3.   (C) Kazuto Sato 1997-2003
  4.   For the license, please read readme.txt.
  5.   
  6.   Written by Kazubon, Nanashi-san
  7. ---------------------------------------------------------------*/
  8.  
  9. #include "tcprop.h"
  10.  
  11. /* Globals */
  12.  
  13. BOOL CALLBACK PageTaskbarProc(HWND hDlg, UINT message,
  14.     WPARAM wParam, LPARAM lParam);
  15.  
  16. /* Statics */
  17.  
  18. static void SendPSChanged(HWND hDlg);
  19. static void OnInit(HWND hDlg);
  20. static void OnApply(HWND hDlg);
  21. static void OnTaskSwitchFlat(HWND hDlg);
  22.  
  23. static BOOL  m_bInit = FALSE;
  24. static BOOL  m_bChanged = FALSE;
  25.  
  26. /*------------------------------------------------
  27.    dialog procedure of this page
  28. --------------------------------------------------*/
  29. BOOL CALLBACK PageTaskbarProc(HWND hDlg, UINT message,
  30.     WPARAM wParam, LPARAM lParam)
  31. {
  32.     switch(message)
  33.     {
  34.         case WM_INITDIALOG:
  35.             OnInit(hDlg);
  36.             return TRUE;
  37.         case WM_COMMAND:
  38.         {
  39.             WORD id, code;
  40.             id = LOWORD(wParam); code = HIWORD(wParam);
  41.             switch(id)
  42.             {
  43.             case IDC_TASKSWITCHFLAT:
  44.                 OnTaskSwitchFlat(hDlg);
  45.                 SendPSChanged(hDlg);
  46.                 break;
  47.             case IDC_TASKSWITCH_SEPARAT:
  48.             case IDC_TBBORDER:
  49. //            case IDC_TBBORDEREX:
  50.             case IDC_FLATTRAY:
  51.             case IDC_RBHIDE:
  52.             case IDC_TASKSWITCHICON:
  53.                 SendPSChanged(hDlg);
  54.                 break;
  55.             case IDC_BARTRANS:
  56.                 if(code == EN_CHANGE)
  57.                     SendPSChanged(hDlg);
  58.                 break;
  59.             }
  60.             return TRUE;
  61.         }
  62.         case WM_NOTIFY:
  63.             switch(((NMHDR *)lParam)->code)
  64.             {
  65.                 case PSN_APPLY: OnApply(hDlg); break;
  66.                 case PSN_HELP: MyHelp(GetParent(hDlg), "Taskbar"); break;
  67.             }
  68.             return TRUE;
  69.     }
  70.     return FALSE;
  71. }
  72.  
  73. /*------------------------------------------------
  74.   notify parent window to enable "Apply" button
  75. --------------------------------------------------*/
  76. void SendPSChanged(HWND hDlg)
  77. {
  78.     if(m_bInit)
  79.     {
  80.         g_bApplyTaskbar = TRUE;
  81.         m_bChanged = TRUE;
  82.         SendMessage(GetParent(hDlg), PSM_CHANGED, (WPARAM)(hDlg), 0);
  83.     }
  84. }
  85.  
  86. /*------------------------------------------------
  87.    initialize
  88. --------------------------------------------------*/
  89. void OnInit(HWND hDlg)
  90. {
  91.     int i, alpha;
  92.     
  93.     m_bInit = FALSE;
  94.     
  95.     // common/tclang.c
  96.     SetDialogLanguage(hDlg, "Taskbar", g_hfontDialog);
  97.     
  98.     UpDown_SetBuddy(hDlg, IDC_SPINBARTRANS, IDC_BARTRANS);
  99.     
  100.     CheckDlgButton(hDlg, IDC_TASKSWITCHFLAT,
  101.         GetMyRegLong(NULL, "TaskSwitchFlat", FALSE));
  102.     CheckDlgButton(hDlg, IDC_TASKSWITCH_SEPARAT,
  103.         GetMyRegLong(NULL, "TaskSwitchSeparators", FALSE));
  104.     CheckDlgButton(hDlg, IDC_TASKSWITCHICON,
  105.         GetMyRegLong(NULL, "TaskSwitchIconsOnly", FALSE));
  106.     CheckDlgButton(hDlg, IDC_RBHIDE,
  107.         GetMyRegLong(NULL, "RebarGripperHide", FALSE));
  108.     CheckDlgButton(hDlg, IDC_TBBORDER,
  109.         GetMyRegLong(NULL, "TaskBarBorder", FALSE));
  110. /*    CheckDlgButton(hDlg, IDC_TBBORDEREX,
  111.         GetMyRegLong(NULL, "TaskBarBorderEx", FALSE)); */
  112.     CheckDlgButton(hDlg, IDC_FLATTRAY,
  113.         GetMyRegLong(NULL, "FlatTray", FALSE));
  114.     
  115.     alpha = GetMyRegLong(NULL, "AlphaTaskbar", 0);
  116.     if(alpha > 100) alpha = 100;
  117.     UpDown_SetRange(hDlg, IDC_SPINBARTRANS, 100, 0);
  118.     UpDown_SetPos(hDlg, IDC_SPINBARTRANS, alpha);
  119.     
  120.     OnTaskSwitchFlat(hDlg);
  121.     
  122.     if(!IsIE4()) // old Win95/NT4
  123.     {
  124.         EnableDlgItem(hDlg, IDC_TASKSWITCHFLAT, FALSE);
  125.         EnableDlgItem(hDlg, IDC_TASKSWITCH_SEPARAT, FALSE);
  126.         EnableDlgItem(hDlg, IDC_TASKSWITCHICON, FALSE);
  127.         EnableDlgItem(hDlg, IDC_RBHIDE, FALSE);
  128.     }
  129.     
  130.     if(IsXPVisualStyle())
  131.     {
  132.         for(i = IDC_TASKBARCLASSIC; i <= IDC_TBBORDER; i++)
  133.             EnableDlgItem(hDlg, i, FALSE);
  134.     }
  135.     
  136.     if(g_winver&WINXP)
  137.     {
  138.         EnableDlgItem(hDlg, IDC_TASKSWITCH_SEPARAT, FALSE);
  139.         EnableDlgItem(hDlg, IDC_TASKSWITCHICON, FALSE);
  140.     }
  141.     
  142.     if(!(g_winver&WIN2000))
  143.     {
  144.         for(i = IDC_CAPBARTRANS; i <= IDC_SPINBARTRANS; i++)
  145.             EnableDlgItem(hDlg, i, FALSE);
  146.     }
  147.     
  148.     m_bInit = TRUE;
  149. }
  150.  
  151. /*------------------------------------------------
  152.   apply - save settings
  153. --------------------------------------------------*/
  154. void OnApply(HWND hDlg)
  155. {
  156.     if(!m_bChanged) return;
  157.     m_bChanged = FALSE;
  158.     
  159.     SetMyRegLong(NULL, "TaskSwitchFlat",
  160.         IsDlgButtonChecked(hDlg, IDC_TASKSWITCHFLAT));
  161.     SetMyRegLong(NULL, "TaskSwitchSeparators",
  162.         IsDlgButtonChecked(hDlg, IDC_TASKSWITCH_SEPARAT));
  163.     SetMyRegLong(NULL, "TaskSwitchIconsOnly",
  164.         IsDlgButtonChecked(hDlg, IDC_TASKSWITCHICON));
  165.     SetMyRegLong(NULL, "RebarGripperHide",
  166.         IsDlgButtonChecked(hDlg, IDC_RBHIDE));
  167.     SetMyRegLong(NULL, "TaskBarBorder",
  168.         IsDlgButtonChecked(hDlg, IDC_TBBORDER));
  169. /*    SetMyRegLong(NULL, "TaskBarBorderEx",
  170.         IsDlgButtonChecked(hDlg, IDC_TBBORDEREX)); */
  171.     SetMyRegLong(NULL, "FlatTray",
  172.         IsDlgButtonChecked(hDlg, IDC_FLATTRAY));
  173.     
  174.     SetMyRegLong(NULL, "AlphaTaskbar",
  175.         UpDown_GetPos(hDlg, IDC_SPINBARTRANS));
  176. }
  177.  
  178. /*------------------------------------------------
  179.   checked "Flat task switch"
  180. --------------------------------------------------*/
  181. void OnTaskSwitchFlat(HWND hDlg)
  182. {
  183.     BOOL b;
  184.     
  185.     b = IsDlgButtonChecked(hDlg, IDC_TASKSWITCHFLAT);
  186.     if(g_winver&WINXP) b = FALSE;
  187.     EnableDlgItem(hDlg, IDC_TASKSWITCH_SEPARAT, b);
  188. }
  189.  
  190.